package com.ck.ips.dao.store;

import com.ck.common.model.DeviceStore;
import com.ck.common.model.Store;
import com.ck.ips.model.vo.StoreVO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description: 门店dao
 * @author: zhanglei
 * @date: 2019/4/29 15:30
 */
public interface StoreMapper {

    /**
     * 添加门店
     * @param store
     * @return
     */
     void createStroe(Store store);

    /**
     * 修改门店
     * @param store
     */
    void updateStore(Store store);

    /**
     * 根据门店id获取门店信息
     * @param storeId 门店id
     * @return
     */
    StoreVO getStoreById(@Param("storeId") Long storeId);

    /**
     * 修改门店状态
     * @param storeId 门店id
     * @param status 门店状态 0-启用 1-禁用
     */
    void updateStatus(@Param("storeId") Long storeId, @Param("status") Integer status);

    /**
     * 检测终端mac是否已经被注册了
     */
    Integer checkDeviceMac(@Param("deviceMac") String deviceMac);

    /**
     * 批量上传终端
     * @param deviceStoreList 终端列表
     * @param storeId 门店id
     */
    void addDeviceStore(@Param("deviceStoreList") List<DeviceStore> deviceStoreList, @Param("storeId") Long storeId);

    /**
     * 修改门店序列号
     * @param storeId 门店id
     * @param serialNum 门店序列号
     */
    void updateStoreSerialNum(@Param("storeId") Long storeId, @Param("serialNum") String serialNum);

    /**
     * 删除门店
     * @param storeId 门店id
     */
    void deleteStore(@Param("storeId") Long storeId);

    /**
     * 根据门店名称获取门店id
     * @param storeName 门店名称
     * @return 门店id
     */
    Long getStoreIdByName(String storeName);

    /**
     * 根据终端唯一code删除门店与设备的关联记录
     * @param deviceCodeList 终端唯一编码列表
     */
    void deleteStoreDevice(@Param("deviceCodeList") List<String> deviceCodeList);

    /**
     * 查看所有的门店信息
     * @param storeName 门店名称
     * @param status 门店状态
     * @return 门店信息列表
     */
    Page<StoreVO> listByPageAll(@Param("storeName") String storeName,@Param("storeStatus") Integer status);

    /**
     * 根据门店id获取门店导入设备的数量
     * @param storeId 门店id
     * @return 数量
     */
    int getCountByDeviceStore(@Param("storeId") Long storeId);
}
